细节诸多…………
$gcd$ 显然可以用线段树维护,但是如果是区间修改的话就不好办了。这个时候我们需要将原矩阵以棋盘守护者的位置为中心进行差分,那么区间修改就变为单点修改了,$gcd$ 自然好维护多了。
但是当我们整体加的时候,因为我们对原矩阵进行了拆分,所以对于每个点是加是减还是不动的话需要分类讨论一番。
经过观察我们会发现,有三种情况(棋盘守护者的位置为 $(X,Y)$
- 询问矩阵不包括 $(X,Y)$
- 询问矩阵包含棋盘守护者所在的 $X$ 轴或是 $Y$ 轴。
- 询问矩阵不包含棋盘守护者所在的 $X$ 轴或是 $Y$ 轴。
- 询问矩阵包括 $(X,Y)$
这个时候我们可以自己更改原矩阵,然后输出其差分矩阵寻找规律了。需要注意的是判断的时候的边界情况以及自己修改的点的位置是否正确。细节很多,需要注意。
Code:
1 |
|
本文标题:【题解】 [NOI2012]魔幻棋盘 二维线段树+差分 luoguP2086/bzoj2788
文章作者:Qiuly
发布时间:2019年04月13日 - 00:00
最后更新:2019年05月05日 - 10:12
原始链接:http://qiulyblog.github.io/2019/04/13/[题解]luoguP2086/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。